package com.xzcedu.outputstream_;

import java.io.*;

/**
 * @author 徐州城
 * @version 1.0
 * 演示使用BufferedInputStream 和 BufferedOutputStream
 * 编程完成图片/音乐的拷贝(要求使用Buffered..流)
 * 使用它们，可以完成二进制的文件拷贝
 * 思考：字节流可以操作二进制文件，可以操作文本文件吗？
 */
public class BufferedCopy02 {
    public static void main(String[] args) {

//        String scrFilePath = "e:\\x.jpg";
//        String destFilePath = "e:\\y.jpg";

        String scrFilePath = "e:\\ok.txt";
        String destFilePath = "e:\\ko.txt";

        //创建 BufferedInputStream 和 BufferedOutputStream 对象
        BufferedInputStream bis = null;
        BufferedOutputStream bos = null;

        try {
            bis = new BufferedInputStream(new FileInputStream(scrFilePath));
            bos = new BufferedOutputStream(new FileOutputStream(destFilePath));

            //循环的读取文件，并写入到 destFilePath
            byte[] buf = new byte[1024];
            int readLen = 0;
            //当返回-1 , 表示文件读取完毕
            while ((readLen = bis.read(buf)) != -1) {
                bos.write(buf, 0, readLen);
            }

        } catch (IOException e) {
            e.printStackTrace();

        } finally {

            //关闭外层流即可，底层会调用节点流的 close()
            try {
                if (bis != null)
                    bis.close();

                if (bos != null)
                    bos.close();

            } catch (IOException e) {
                e.printStackTrace();
            }

        }

        System.out.println("程序结束..");
    }
}
